import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
const CHANGE='change'

import {getUserInfo} from '../api/user.js'
import {getCateList} from '../api/home.js'
// Vuex可以跨页面使用的 全局变量
// mutations 对应 commit
	// 用mutations里的方法 要用commit来调
	// actions 对应 dispatch
	// 用actions里的方法 要用dispatch来调
	
export default new Vuex.Store({
	// state 放数据
	state: {
		// a:1,
		token:"",
		uid:'',
		userInfo:{},
		isLogin:false,
		cate:[]
	},
	// getters 是vue里的computed计算属性
	getters: {},
	// mutations 放方法
	mutations: {
		// 方法名(state,形参/自己传来的参)
		// changea(state,val){
		// 	// 在这个里只能存粹的改数据
		// 	state.a=val
		// },
		[CHANGE](state,{key,value}){
			state[key]=value
		},
		clear(state){
			state.token="";
			state.uid='';
			state.userInfo={};
			state.isLogin=false;
		}
	},
	// actions是调功能方法的  
	// mutations 与 actions相似 但是mutations里只能存粹的改数据  在actions里面可以写异步
	actions: {
		// 方法名(对象,传参接收的那个value)
		getUserInfo(json,token){
			console.log(json);
			// 在这里面 可以写异步
			getUserInfo({
				token
			}).then(res=>{
				console.log(res);
				// 再次存起来
				
				if(res.data.code==0){
					// 改数据要用mutations里改 用commit改  但要在actions里改
					json.commit('change',{key:"userInfo",value:res.userInfo})
					json.commit('change',{key:'uid',value:res.uid})
					json.commit('change',{key:'token',value:res.token})
					json.commit('change',{key:'isLogin',value:true})
				}else{
					console.log(res.data.msg);
				}
				
			})
		},
		getCate({state,commit}){
			getCateList().then(res=>{
				console.log(res.data);
				commit('change',{key:"cate",value:res.data.data})
			})
		}
	},
	// modules
	modules: {}
})